
package com.xinan.weixin.media;

import com.jfinal.aop.Before;
import com.jfinal.core.BaseController;
import com.jfinal.core.Const;
import com.jfinal.core.Controller;
import com.jfinal.ext.interceptor.SearchSql;
import com.jfinal.plugin.activerecord.Page;
import com.jfinal.plugin.activerecord.Record;
import com.xinan.utils.Constants;
import com.xinan.utils.PropertiesHelper;
import com.xinan.utils.Upload;
import org.apache.log4j.Logger;

import java.io.File;
import java.util.List;
import java.util.Properties;

public class WxImgController extends BaseController {
    private static String filePath = "";
    private static String url = "";

    /**
     *判断filePhth路径中是否存在该文件夹，不存在则创建该文件夹
     *创建成功则返回True
     * @param filePhth
     * @return
     **/
    static {
        Properties r = PropertiesHelper.loadProperty("/weixin.properties");
        if (!r.isEmpty()) {
            try {
                filePath = r.getProperty("filePath");
                url = r.getProperty("wxmediaUrl");
            } catch (Exception e) {
                Logger.getLogger(WxImgController.class).error("无法读取参数", e);
            }
        } else {
            Logger.getLogger(WxImgController.class).error("无法读取 weixin.properties");
        }
    }

    public void index() {
        List<Record> newlist = WxImg.dao.findAlls("");
        setAttr("filePath", filePath);
        setAttr("list", newlist);
        render("/WEB-INF/views/weixin/media/wxImg.html");
    }

    /**
     * add
     */
    public void newModes() {
        String id = getPara("id");
//    List<Record> newlist = Db.find("select  * from     where    id=  '" + id + "'");
        List<Record> newlist = WxImg.dao.findAlls("       id=  '" + id + "'");

        setAttr("newlist", newlist);
        render("test/wxImg.html");
    }

    /**
     * 在增加了SearchSql拦截之后就可以根据页面配置信息
     * 自动装配查询语句放入request中,通过getAttr(Const.SEARCH_SQL)函数获得
     * 根据实际需要自动组装到Sql语句里面
     */
    @Before(SearchSql.class)
    public void query() {
        int pageNumber = getParaToInt("page");
        int pageSize = getParaToInt("rows");
        String where = getAttr(Const.SEARCH_SQL);
        Page<WxImg> page = WxImg.dao.page(pageNumber, pageSize, where);
        renderJson(page);
    }

    /**
     * save
     *
     * @param
     * @return
     */
    public void save() {
        if (getModel(WxImg.class).save()) {
        	renderText(Constants.SAVESUCCESS);
        } else {
        	renderText(Constants.SAVEFAILED);
        }
    }

    /**
     * Post请求的菜单更新函数,可以接受菜单的id和菜单对象,并且根据菜单id进行更新,返回影响行数根据此判断是否操作成功
     * 本例子使用rose框架的est风格url可以吧参数作为路径一部分进行传递
     *
     * @param
     * @return
     */
    public void update() {
        if (getModel(WxImg.class).update()) {
        	renderText(Constants.EDITSUCCESS);
        } else {
        	renderText(Constants.EDITFAILED);
        }
    }

    /**
     * Post请求的菜单删除函数,可以接受菜单ID 并且根据ID进行物理删除,并且返回影响行数,据此判断是否操作成功
     *
     * @param
     * @return
     */
    public void delete() {
        if (WxImg.dao.deleteById(getParaToInt())) {
        	renderText(Constants.DELETESUCCESS);
        } else {
        	renderText(Constants.DELETEFAILED);
        }
    }

    /**
     * 文件删除
     */
    public void delfile() {
        String filename = getPara("filename");
        String id = getPara("id");
        String file = getRequest().getRealPath("/" + filePath) + "/" + filename;
        File f = new File(file);
        // 路径为文件且不为空则进行删除
        if (WxImg.dao.deleteById(id)) {
            //删除文件
            if (f.isFile() && f.exists()) {
                f.delete();
                //
                renderText(Constants.DELETESUCCESS);
            } else {
            	renderText(Constants.DELETEFAILED);
            }
        } else {
        	renderText(Constants.DELETEFAILED);
        }
    }
}

